from selenium import webdriver
from selenium.webdriver.chrome.options import Options
import time
import json
import requests

class Login:
    def __init__(self):
        self.username = "test"
        self.password = "test"
        self.session = requests.session()

    def loginByName(self):
        print("loginByName")
        #step1 模拟登录 

        # 不打开浏览器窗口
        # options = webdriver.ChromeOptions()
        # options.add_argument('--no-sandbox')  # 解决DevToolsActivePort文件不存在的报错
        # options.add_argument('--disable-gpu')  # 谷歌文件提到需要加这个属性来规避bug
        # options.add_argument('--headless')  # 无界面设置
        # chrome = webdriver.Chrome(options=options) 
        # 打开浏览器窗口
        chrome = webdriver.Chrome()
        chrome.get("https://acc.maimai.cn/login")
        chrome.implicitly_wait(5)
        assert "脉脉-成就职业梦想" in chrome.title
    
        chrome.find_element("xpath", "//input[@class='loginPhoneInput']").send_keys(self.username)
        time.sleep(2)
        chrome.find_element("xpath", "//input[@id='login_pw']").send_keys(self.password)
        chrome.find_element('xpath', "//input[@class='loginBtn']").click()
        chrome.implicitly_wait(5) 
        
        #step2 获取session 
        selenium_cookies = chrome.get_cookies()

        # 处理cookie
        for i in selenium_cookies:
            requests.utils.add_dict_to_cookiejar(self.session.cookies, {i['name']: i['value']})
        with open("cookie.json", "w+")as f:
            f.write(json.dumps(selenium_cookies))
            f.close()
            
        print("cookies succed")

        chrome.close()

    def run(self):
        self.loginByName()

# 数据获取
#这里面主要有2个问题：
#1. 第一个网站使用了ajax加载，我们需要找到我们需要的url
#2. 第二个是获取的html需要进行处理，才能被我们所利用

if __name__ == "__main__":
    l = Login()
    l.run()